1. Field of the Invention
The present invention relates generally to data storage subsystems, and more particularly to video servers.
2. Background Art
Mainframe data processing, and more recently distributed computing, have required increasing large amounts of data storage. This data storage is most economically provided by arrays of low-cost disk drives integrated with a large semiconductor cache memory. More recently, however, rapid advances in processor, high-speed network and switching technologies have enabled various multi-media applications having storage requirements that exceed the capabilities of conventional integrated cached disk arrays. Multi-media material is typically composed of a large amount of audio, video, graphics, text, and data, requiring a large storage capacity. More importantly, limitations on the amount of buffer capacity of user terminals may set stringent demands on the required availability of data access.
Real-time video, such as "video on demand" or interactive television, are particularly demanding multi-media applications. Real-time video is "isochronous"; i.e., it must be delivered at a constant data rate. Interactive video has the additional requirement that data access must appear nearly instantaneous to the user.
Storage systems under development for interactive television are known as "video servers." It is desired for a video server to provide real-time video at a fixed data rate to a large number of concurrent users, to store a large number of movie titles on-line with a larger number of titles off-line in tape archives, and to respond in less than a second to a user's request for a movie catalog search or a movie order.
Current video server architectures are described in Krishan Natarajan, "Video Servers Take Root," IEEE Spectrum, April 1995, pp. 66-69. Video server architectures generally include disk and dynamic RAM, memory controllers, output data bases, and output interfaces. The video server is designed to ensure that video data are delivered at a constant rate. Encoded audio and video data from disk or RAM are combined into single isochronous streams. A number of such streams are switched to appropriate output interfaces and transmitted to the users. The video server also provides a transaction-processing system for user-initiated functions.
Current designs for video servers are based on PC (personal computer) technology, multiprocessing Unix computers, massively parallel computer architectures, or specialized hardware for real-time video delivery.
PC-based video servers use specialized software running on one machine or on networks of them. On multiple PCs, specialized software for the transaction processing and real-time video and audio delivery functions can be split among different platforms.
Video servers based on multiprocessor minicomputers also use specialized software running on standard computer hardware, but can typically cope with larger number of concurrent streams than PCs. As with multiple-PC platforms, the real-time delivery function can be separated from the transaction-processing function.
A massively parallel computer architecture interconnects hundreds of processors, each with its own random-access memory and disk storage. Compressed audio and video data are distributed across the disk storage processors. Control software reads the compressed data and formats the data into output video streams.
A video server based on specialized hardware delivers compressed video and audio directly from disk storage. The hardware is designed to pull the video data out of the disk storage and transmit the data downstream at the required data rate.
A video file server also needs a scheduler and an admission-control policy to maintain performance guarantees for real-time streams in the presence of unpredictably varying non-real-time traffic while ensuring system stability during overloads. A suitable scheduler and admission control policy is described in K. K. Ramakrishnan et al., "Operating System Support for a Video-On-Demand File Service," Multimedia Systems, Vol. 3, Springer-Verlag, 1995, pp. 53-65. The scheduler supports multiple classes of tasks with diverse performance requirements and allows for the co-existence of guaranteed real-time requests with sporadic and unsolicited requests.